/**
 * 
 * 关于Ip处理
 * @author yanwl
 * @data 2015-01-29
 */
package com.chnbst.bstyun.eos;

import java.net.InetAddress;
import java.net.UnknownHostException;

import javax.servlet.http.HttpServletRequest;

public class IPUtil {
	
	/*获取客户端的真实ip*/
	public static String getIpAddr(HttpServletRequest request) {   
	     String ipAddress = null;
	     ipAddress = request.getHeader("x-forwarded-for");   
	     if(ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {   
	    	 ipAddress = request.getHeader("Proxy-Client-IP");   
	     }   
	     if(ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {   
	         ipAddress = request.getHeader("WL-Proxy-Client-IP");   
	     }   
	     if(ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {   
		     ipAddress = request.getRemoteAddr();   
		     if("0:0:0:0:0:0:0:1".equals(ipAddress) || "127.0.0.1".equals(ipAddress)){   
		    	 //根据网卡取本机配置的IP   
		    	 InetAddress inet=null;   
		    	 try {   
		    		 inet = InetAddress.getLocalHost();   
		    	 } catch (UnknownHostException e) {   
		    		 e.printStackTrace();   
		    	 }   
		    	 ipAddress= inet.getHostAddress();   
		     }   
	     }   
	  
	     //对于通过多个代理的情况，第一个IP为客户端真实IP,多个IP按照','分割   
	     if(ipAddress!=null && ipAddress.length()>15){ //"***.***.***.***".length() = 15   
	         if(ipAddress.indexOf(",")>0){   
	             ipAddress = ipAddress.substring(0,ipAddress.indexOf(","));   
	         }   
	     }   
	     return ipAddress;
	}   
}
